<template>
  <div class="login-page">
    <!-- 导航栏 -->
    <van-nav-bar title="面经注册" />

    <!-- submit是提交表单的事件 -->
    <van-form @submit="onSubmit">
      <!--
        rules:就是设置规则的地方
       -->
      <van-field
        v-model="user.username"
        label="用户名"
        placeholder="用户名"
        :rules="rules.username"
      />
      <van-field
        v-model="user.password"
        type="password"
        label="密码"
        placeholder="密码"
        :rules="rules.password"
      />
      <div style="margin: 16px;">
        <van-button round block type="primary" native-type="submit"
          >注册</van-button
        >
      </div>
    </van-form>
    <router-link to="/login" class="link">有账号，去登录</router-link>
  </div>
</template>

<script>
// 导入封装的接口
import { regAPI } from '@/api/user'
// 导入请求对象
export default {
  // 标准规范的语法里，组件名必须至少两个单词，那为什么文件名是单个单词也可以了? -->
  // 因为加了name属性
  name: 'login-page',
  data () {
    return {
      // 方便统一管理
      user: {
        username: '',
        password: ''
      },
      rules: {
        username: [
          { required: true, message: '请填写用户名' },
          { pattern: /\w{5,}/, message: '账号至少5位' }
        ],
        password: [
          { required: true, message: '请填写密码' },
          { pattern: /\w{6,}/, message: '密码至少6位' }
        ]
      }
    }
  },
  methods: {
    async onSubmit () {
      try {
      // 当这个事件触发时，证明绝对通过了校验规则
      // 那我们就不用自己再判断了
        await regAPI(this.user)
        // 弹出提示
        this.$toast.success('注册成功')
        // 跳转到登录页
        this.$router.push('/login')
      } catch {}
    }
  }
}
</script>

<style lang="less" scoped>
.link {
  color: #069;
  font-size: 12px;
  padding-right: 20px;
  float: right;
}
</style>
